#ifndef SEGMENTATIONTECHNIQUE_H
#define SEGMENTATIONTECHNIQUE_H

#include "Segmentation.h"

/**
  * This class represents an Interface for any Segmentation Technique.
  */
class SegmentationTechnique
{

protected:

    // Image to segment
    QImage * image;
    
public:

    /**
      * SegmentationTechnique constructor.
      *
      */
    SegmentationTechnique();

    /**
      * Set the QImage to segment.
      *
      * @param img QImage to segment.
      */
    void setImage( QImage * img );

    /**
      * Get the QImage associated to the Segmentation.
      *
      * @return Returns the QImage associated to the Segmentation.
      */
    QImage * getImage();

    /**
      * Apply the segmentation algorithm to the image
      *
      * @return Returns the segmented image.
      */
    virtual Segmentation * segment() = 0;

};

#endif // SEGMENTATIONTECHNIQUE_H
